import matplotlib.pyplot as plt  
from matplotlib.gridspec import GridSpec  
from mpl_toolkits.axes_grid1 import make_axes_locatable
  
# 创建一个figure对象  
fig = plt.figure()  
  
# 使用GridSpec定义网格布局  
# 这里假设整个窗口高度被分为4个单位，前两个坐标轴各占2个单位，第三个坐标轴占下面的2个单位  
gs = GridSpec(2, 2, height_ratios=[1, 1], width_ratios=[1, 1])  # 注意这里实际上我们使用了4个单位的高度，但只使用了前三个  
  
# 创建前两个坐标轴，它们位于前两个高度单位  
ax1 = fig.add_subplot(gs[0, 0])  # 使用第0和第1个高度单位  
ax2 = fig.add_subplot(gs[0, 1])  
  
# 创建第三个坐标轴，它位于剩下的两个高度单位（但我们只使用第3个）  
ax3 = fig.add_subplot(gs[1, :])  # 使用第3个高度单位，并共享x轴  
  
# 为了使第三个坐标轴看起来像是占满了下半部分，我们隐藏了额外的空网格（在这里是第四个高度单位）  
gs.update(hspace=0)  # 移除子图之间的垂直空间  
  
# 这里只是添加一些示例数据  
ax1.plot([1, 2, 3], [1, 4, 2])  
ax1.set_title('Axis 1')  
ax2.plot([1, 2, 3], [2, 3, 5])  
ax2.set_title('Axis 2')  
ax3.plot([1, 2, 3], [3, 2, 1])  
ax3.set_title('Axis 3')  
ax3.set_xlabel('X-axis')  # 因为前两个轴也共享了这个x轴，所以它们都会显示这个标签  
  
# 显示图形  
plt.tight_layout()  # 调整子图参数，使之填充整个图像区域  
plt.show()
